class Solution 
{
public:
    double myPow(double x, int n) 
    {
        return n<0 ? 1.0/dsfPow(x, -(long long)n) : dsfPow(x, n);
    }

    double dsfPow(double x, long long n)
    {
        if(n==0)
            return 1;
        double tmp = myPow(x, n/2);
        return n%2 == 0 ? tmp*tmp : tmp*tmp*x;
    }
};